package com.mzy.tomcat.utils;

import java.io.File;
import java.util.List;

public class FileUtils {


    /**
     * 获取所有类的路径
     *
     * @param path          当前classes路径
     * @param classFilePath 传入存放所有类路径的容器
     */
    public static void getClassFilePath(String path, List<String> classFilePath) {
        File dir = new File(path);

        if (dir.isFile()) {
            // 获取当前文件的路径
            String dirPath = dir.getPath();

            String extensionName = getExtensionName(dirPath);

            // 如果不是 .class 也直接返回
            if (!"class".equals(extensionName)) {
                return;
            }

            // 分割当前类的全类名
            String[] split = dirPath.split("classes" + File.separator + File.separator);

            // 替换当前路径中的 \ 为 .
            String allClassNameHasExtension = split[1].replace("\\", ".");

            int lastPointIndex = allClassNameHasExtension.lastIndexOf('.');

            String allClassName = allClassNameHasExtension.substring(0, lastPointIndex);
            // 将全类名放入集合
            classFilePath.add(allClassName);
        } else {
            File[] files = dir.listFiles();
            if (files != null) {
                for (File file : files) {
                    getClassFilePath(file.getPath(), classFilePath);
                }
            }
        }
    }

    public static String getExtensionName(String fileName) {
        // 获取当前文件中最后一个 . 的位置
        int lastIndexOf = fileName.lastIndexOf(".");

        // 如果当前文件没有扩展名直接返回
        if (lastIndexOf == -1) {
            return "";
        }
        // 获取后缀名
        String extension = fileName.substring(lastIndexOf + 1);
        return extension;
    }
}
